﻿using System;
using System.Data;
using System.Windows.Forms;
using System.Globalization;
using AD.EngenhariaTransito;
using Csharp.Comum;

namespace EngenhariaTransitoAngola
{
    public partial class frmCadastroAgente : Form
    {
        public bool _blnFormAtivo = false;

        private int idEnderecoCaixaPostal = 0;
        private int idPessoa = 0;

        public frmCadastroAgente()
        {
            InitializeComponent();
        }

        private void Iniciar()
        {
            LimparTela();
            PesquisarPostosPoliciais();
        }

        private  void LimparTela()
        {
            txtAdmBairro.Text = string.Empty;
            txtAdmCidade.Text = string.Empty;
            txtAdmCodigoPostal.Text = string.Empty;
            txtAdmComplEndereco.Text = string.Empty;
            txtAdmEmail.Text = string.Empty;
            txtAdmEndereco.Text = string.Empty;
            txtAdmEstado.Text = string.Empty;
            txtAdmFoneMovel.Text = string.Empty;
            txtAdmFoneResidencia.Text = string.Empty;
            txtAdmNroEndereco.Text = string.Empty;
            txtAgenteHoraInicio.Text = "07:00";
            txtAgenteHoraFinal.Text = "17:00";
            txtAgenteLocalEmissao.Text = string.Empty;
            txtAgenteNome.Text = string.Empty;
            txtAgenteNroFuncional.Text = string.Empty;
            txtAgenteNroLicenca.Text = string.Empty;
            txtAgenteObservacao.Text = string.Empty;

        }


        private void btnSalvar_Click(object sender, EventArgs e)
        {
            if(ValidarInformacoes())
            {
                SalvarInformacoes();
            }
        }


        private bool ValidarInformacoes()
        {

            if (idEnderecoCaixaPostal == 0)
            {
                MessageBox.Show("Não foi informado os dados adminstrativos para este lançamento!");
                return false;
            }

            if (txtAgenteNome.Text == string.Empty)
            {
                MessageBox.Show("informe o nome do Agente!");
                return false;
            }

            if (txtAgenteNroFuncional.Text == string.Empty)
            {
                MessageBox.Show("informe o número da Funcional do Agente!");
                return false;
            }

            if (txtAgenteNroLicenca.Text == string.Empty)
            {
                MessageBox.Show("informe o número de licença do Agente!");
                return false;
            }

            if(txtAgenteLocalEmissao.Text == string.Empty)
            {
                MessageBox.Show("informe o local de emissão da licença do Agente!");
                return false;
            }

            if (dtAgenteDataNasc.Text == string.Empty)
            {
                MessageBox.Show("informe a data de nascimentos do Agente!");
                return false;
            }

            if (dtAgenteLicencaEmissao.Text == string.Empty)
            {
                MessageBox.Show("informe a data de emissão da licença do Agente!");
                return false;
            }


            if (txtAdmCodigoPostal.Text == string.Empty)
            {
                MessageBox.Show("informe o número de caixa postal do Agente!");
                return false;
            }
 
            if (txtAdmFoneResidencia.Text == string.Empty)
            {
                MessageBox.Show("informe o número do telefone da residência do Agente!");
                return false;
            }


            if(txtAdmFoneMovel.Text == string.Empty)
            {
                MessageBox.Show("informe o número do telefone móvel do Agente!");
                return false;
            }


            if(txtAdmEmail.Text == string.Empty)
            {
                MessageBox.Show("informe o e-mail do Agente!");
                return false;
            }

            return true;

        }

        private void SalvarInformacoes()
        {
            string optSexo = "M";

            if(optAgenteSexoFeminino.Checked == true)
                optSexo = "F";

            DataSet ds = new DataSet();
            ds.Locale = CultureInfo.InvariantCulture;

            ds = Pessoa.PessoaCadastro(txtAgenteNome.Text.Trim(), 
                                  dtAgenteDataNasc.Text, 
                                  optSexo, 
                                  txtAgenteNroLicenca.Text, 
                                  dtAgenteLicencaEmissao.Text,
                                  idEnderecoCaixaPostal, 
                                  txtAdmNroEndereco.Text, 
                                  txtAdmComplEndereco.Text, 
                                  txtAdmEmail.Text  );

            if (ds.Tables[0].Rows.Count > 0)
            {
                idPessoa = BancoDados.LerColunaInt("idPessoa", ds, 0);

                CadastrarNovoAgente(idPessoa);
            }

        }

        private void CadastrarNovoAgente(int idPessoa)
        {
            int idEstacaoTrabalho = int.Parse(cboAgentePostoDesignado.SelectedValue.ToString()); 

            Pessoa.AgenteCadastro(idPessoa, txtAgenteNroFuncional.Text, "",dtAgenteIntegracao.Text, idEstacaoTrabalho, txtAgenteObservacao.Text  );
        }

        private void btnPesquisarEndereco_Click(object sender, EventArgs e)
        {
            PesquisarEndereco();
        }

        private void PesquisarEndereco()
        {
            DataSet ds = new DataSet();
            ds.Locale = CultureInfo.InvariantCulture;

            ds = Endereco.PesquisarEndereco(txtAdmCodigoPostal.Text);

            if (ds.Tables[0].Rows.Count > 0)
            {
                idEnderecoCaixaPostal = BancoDados.LerColunaInt("IdEndereco", ds, 0);
                txtAdmEndereco.Text = BancoDados.LerColuna("Endereco", ds, 0);
                txtAdmBairro.Text = BancoDados.LerColuna("Bairro", ds, 0);
                txtAdmCidade.Text = BancoDados.LerColuna("Cidade", ds, 0);
                txtAdmEstado.Text = BancoDados.LerColuna("Estado", ds, 0);
                ///txtAdmPais.Text = BancoDados.LerColuna("Pais", ds, 0); 
            }
            else
            {
                MessageBox.Show("Endereço não encontrado, faça o cadastro antes desse lançamento!");
                return;
            }
        }

        private void PesquisarPostosPoliciais()
        {
            DataSet ds = new DataSet();
            ds.Locale = CultureInfo.InvariantCulture;

            ds = Postos.PesquisarPostosPoliciais();

            if (ds.Tables[0].Rows.Count > 0)
            {
                cboAgentePostoDesignado.DataSource = ds.Tables[0];
                cboAgentePostoDesignado.DisplayMember = "Descricao";
                cboAgentePostoDesignado.ValueMember = "IdEstacao";

                //idPostoDesignado = int.Parse(cboAgentePostoDesignado.SelectedValue.ToString()); 
            }
        }

        private void frmCadastroAgente_Load(object sender, EventArgs e)
        {
            _blnFormAtivo = true;
            Iniciar();
        }

        private void menuIncluirNovo_Click(object sender, EventArgs e)
        {
            LimparTela();
        }

        private void menuConfirmar_Click(object sender, EventArgs e)
        {
            if (ValidarInformacoes())
            {
                SalvarInformacoes();
            }
        }

        private void btnPesquisarNroFuncional_Click(object sender, EventArgs e)
        {
            if (txtAgenteNroFuncional.Text == "")
            {
                MessageBox.Show("Informe o numero da funcional do Agente!");
                return;
            }
            PesquisarAgente();
        }

        private void btnPesquisarDocumento_Click(object sender, EventArgs e)
        {
            if (txtAgenteNroDoc.Text == "")
            {
                MessageBox.Show("Informe um Numero de documento pessoal do Agente!");
                return;
            }
            PesquisarAgente();
        }

        private void btnPesquisarHabilitacao_Click(object sender, EventArgs e)
        {
            if (txtAgenteNroLicenca.Text == "")
            {
                MessageBox.Show("Informe o numero da habilitação do Agente!");
                return;
            }
            PesquisarAgente();
        }


        private void PesquisarAgente()
        {
            DataSet ds = new DataSet();
            ds.Locale = CultureInfo.InvariantCulture;

            ds = Pessoa.AgenteTransitoPesquisa(txtAgenteNroFuncional.Text, txtAgenteNroDoc.Text, txtAgenteNroLicenca.Text);

            if (ds.Tables[0].Rows.Count > 0)
            {

                txtAgenteNroFuncional.Text = BancoDados.LerColuna("RegistroIdentificacao", ds, 0);
                txtAgenteNome.Text = BancoDados.LerColuna("NomeAgente", ds, 0);
                txtAgenteNroDoc.Text = BancoDados.LerColuna("nroDocto", ds, 0);

                cboAgenteTipoDoc.SelectedText = BancoDados.LerColuna("TipoDocto", ds, 0);  
                cboAgentePostoDesignado.SelectedText = BancoDados.LerColuna("PostoPolicial", ds, 0);  

                txtAgenteLocalEmissao.Text = BancoDados.LerColuna("localEmissaoHabilitacao", ds, 0);
                txtAgenteHoraInicio.Text = BancoDados.LerColuna("horaInicioAtividade", ds, 0);
                txtAgenteHoraFinal.Text = BancoDados.LerColuna("horaTerminoAtividade", ds, 0);
                txtAgenteNroLicenca.Text = BancoDados.LerColuna("NroCarteiraHabilitacao", ds, 0);
                txtAgenteObservacao.Text = BancoDados.LerColuna("ObsAgente", ds, 0);
                
                txtAdmCodigoPostal.Text = BancoDados.LerColuna("CaixaPostal", ds, 0);
                txtAdmEndereco.Text = BancoDados.LerColuna("Endereco", ds, 0);
                txtAdmNroEndereco.Text = BancoDados.LerColuna("NroEndereco", ds, 0);
                txtAdmComplEndereco.Text = BancoDados.LerColuna("ComplementoEndereco", ds, 0);
                txtAdmBairro.Text = BancoDados.LerColuna("Bairro", ds, 0);
                txtAdmCidade.Text = BancoDados.LerColuna("Cidade", ds, 0);
                txtAdmEstado.Text = BancoDados.LerColuna("Estado", ds, 0);

                txtAdmFoneMovel.Text = BancoDados.LerColuna("telefoneMovel", ds, 0);
                txtAdmFoneResidencia.Text = BancoDados.LerColuna("telefoneFixo", ds, 0);
                txtAdmEmail.Text = BancoDados.LerColuna("email", ds, 0);

                dtAgenteDataNasc.Text = BancoDados.LerColuna("DataNascimento", ds, 0);
                dtAgenteIntegracao.Text = BancoDados.LerColuna("DataIntegracao", ds, 0);


            }
        }

        private void menuCancelar_Click(object sender, EventArgs e)
        {
            LimparTela();
        }

    }
}
